import React from 'react';

export default function index() {
  // -----------------矩阵置零-------------
  // 思路：
  // 原地算法：不可创建新的数据结构 使用原结构
  // 1、遍历矩阵第一行、第一列是否存在零，使用两个标记去记录（用于最后确认是否将第一行、第一列置零）
  // 2、使用第一行、第一列标记后面的零：遍历除第一行、第一列的矩阵，检查是否有零，有零则将该行、列的第一个位置置零
  // 3、遍历矩阵，检查该元素对应的行/列的第一个元素是否为0
  // 4、根据标记处理第一行、第一列
  const zeroingTheMatrix = (matrix: number[][]) => {
    // 1、遍历第一行、第一列
    let tagOfFirstRow = false;
    let tagOfFirstCol = false;
    const rowLength = matrix[0]?.length;
    const colLength = matrix?.length;
    for (let i = 0; i < rowLength; i++) {
      if (matrix[0][i] === 0) tagOfFirstRow = true;
    }
    for (let j = 0; j < colLength; j++) {
      if (matrix[j][0] === 0) tagOfFirstCol = true;
    }

    // 2、使用第一行、第一列标记后面的零
    for (let j = 1; j < colLength; j++) {
      for (let i = 1; i < rowLength; i++) {
        if (matrix[j][i] === 0) {
          matrix[j][0] = 0;
          matrix[0][i] = 0;
        }
      }
    }

    // 3、遍历数组，将使用第一行、第一列为0的元素置零
    for (let j = 1; j < colLength; j++) {
      for (let i = 1; i < rowLength; i++) {
        if (matrix[0][i] === 0 || matrix[j][0] === 0) matrix[j][i] = 0;
      }
    }

    // 处理第一行、第一列
    if (tagOfFirstRow) {
      for (let i = 0; i < rowLength; i++) matrix[0][i] = 0;
    }
    if (tagOfFirstCol) {
      for (let j = 0; j < colLength; j++) matrix[j][0] = 0;
    }
    return matrix;
  };
  // -----------螺旋矩阵----------------------
  // 思路：
  //第一行--第n列--第n行--第一列     --第二行--第n-1列--第n-1行--第2列 ---
  // 每一次循环都不输出最后一个数
  const spiralMatrix = (matrix: number[][]) => {
    const rowLength = matrix[0]?.length;
    const colLength = matrix?.length;
    let result: number[] = [];
    for (let i = 0; i < rowLength; i++) {
      for (let j = 0; j < colLength; j++) {
        if (matrix[j][i]) result.push(matrix[j][i]);
      }
    }
  };
  return <div>矩阵</div>;
}
